#ifndef vtkYorungeNoktasal_h__
#define vtkYorungeNoktasal_h__

#include "vtkYorunge.h"


// VTK
#include <vtkPolyDataMapper.h>
#include <vtkVertexGlyphFilter.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPointData.h>
#include <vtkCellArray.h>

/** 
 * \class vtkYorungeNoktasal
 * \ingroup Gosterim
 * \brief Bir noktasal yorunge icin gerekli olan VTK data yapilarini birlestiren siniftir.
 * \author Mehmet Yigitsoy
 * \date $Date: 2013/01/03 11:23:00 $
 */
class vtkYorungeNoktasal : public vtkYorunge

{
public:
	/**
	 * \brief 
	 * \returns 
	 **/
	vtkYorungeNoktasal(YorungeId id);


	/**
	 * \brief 
	 * \returns 
	 **/
	~vtkYorungeNoktasal();


	/**
	 * \brief Yeni bir posisyon eklemek icin kullanilir.
	 * \param pozisyon
	 * \returns void
	 **/
	virtual void pozisyonEkle(const Pozisyon& pozisyon);


protected:
	/**
	 * \brief vtk pipeline'in guncellenmesi icin cagrilasi gereken method. Yeni bir pozisyon eklendiginde cagirilir.
	 * \returns void
	 **/
	void guncelle();

private:
	vtkSmartPointer<vtkPoints>				m_points;					///< Koordinatlari tutan konteynir.
	vtkSmartPointer<vtkPolyData>			m_points_polydata;			///< Koordinatlardan olusan ve vertex filtresine gonderilecek polydata.
	vtkSmartPointer<vtkPolyData>			m_polydata;					///< Mapper'a verilecek polydata.
	vtkSmartPointer<vtkVertexGlyphFilter>	m_filter;					///< Input kordinatlardan vertex'ler olusturacak filtre.
	vtkSmartPointer<vtkPolyDataMapper>		m_mapper;					///< Noktalari ozellik arayacak mapper.
	vtkSmartPointer<vtkActor>				m_actor;					///< Renderer'da polydata'yi temsil edecek aktor.
};

typedef vtkYorungeNoktasal* VtkYorungeNoktasalPtr;


#endif // vtkYorungeNoktasal_h__